/**
 *
 * 破环单例模式的三种方式：反射，序列化，克隆
 *
 * 如何防止反射、克隆、序列化对单例模式的破环
 * 1、防止反射破环(虽然构造方法已私有化，但通过反射机制使用newInstance()方法构造方法也是可以被调用):
 * 首先定义一个全局变量开关isFristCreate默认为开启状态
 * 当第一次加载时将其状态更改为关闭状态
 *
 * 2、防止克隆破环
 * 重写clone()，直接返回单例对象
 *
 * 3、防止序列化破环
 * 添加readResolve()，返回Object对象
 */
package cn.jdemo.pattern.singleton;